#!/usr/bin/env python
"""
删除所有工单的脚本
使用前请谨慎，此操作不可逆！
"""

import os
import sys
import django

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'maintenance_system.settings')
django.setup()

from tickets.models import Ticket, MaintenanceRecord

def delete_all_tickets():
    """删除所有工单和维修记录"""
    print("⚠️  警告：此操作将删除所有工单和维修记录，不可恢复！")
    print(f"当前工单数量: {Ticket.objects.count()}")
    print(f"当前维修记录数量: {MaintenanceRecord.objects.count()}")
    
    # 确认操作
    confirm = input("请输入 'DELETE ALL' 确认删除操作: ")
    if confirm != 'DELETE ALL':
        print("操作已取消")
        return
    
    # 删除维修记录
    maintenance_records_deleted = MaintenanceRecord.objects.all().delete()
    print(f"已删除 {maintenance_records_deleted[0]} 条维修记录")
    
    # 删除工单
    tickets_deleted = Ticket.objects.all().delete()
    print(f"已删除 {tickets_deleted[0]} 个工单")
    
    print("✅ 所有工单和维修记录已删除")

def delete_tickets_with_confirmation(dry_run=True):
    """
    带确认的删除工单功能
    :param dry_run: 是否为干运行（只显示统计信息，不实际删除）
    """
    ticket_count = Ticket.objects.count()
    record_count = MaintenanceRecord.objects.count()
    
    print("=" * 50)
    print("工单删除工具")
    print("=" * 50)
    print(f"当前工单数量: {ticket_count}")
    print(f"当前维修记录数量: {record_count}")
    print("=" * 50)
    
    if dry_run:
        print("⚠️  当前为干运行模式，不会实际删除数据")
        return
    
    if ticket_count == 0 and record_count == 0:
        print("✅ 没有需要删除的数据")
        return
    
    # 确认删除
    confirm = input("确定要删除所有工单和维修记录吗？(输入 'YES' 确认): ")
    if confirm != 'YES':
        print("操作已取消")
        return
    
    # 执行删除
    try:
        # 先删除维修记录（外键约束）
        MaintenanceRecord.objects.all().delete()
        # 再删除工单
        Ticket.objects.all().delete()
        print("✅ 所有工单和维修记录已成功删除")
    except Exception as e:
        print(f"❌ 删除过程中出现错误: {e}")

if __name__ == "__main__":
    # 处理命令行参数
    dry_run = False
    force = False
    
    if len(sys.argv) > 1:
        if sys.argv[1] == "--dry-run":
            dry_run = True
        elif sys.argv[1] == "--force":
            force = True
    
    if force:
        delete_all_tickets()
    else:
        # 显示统计信息，需要手动确认
        delete_tickets_with_confirmation(dry_run=dry_run)
